<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Encuesta_lst( $this );

	class Encuesta_lst extends Lst
	{
	function Encuesta_lst( &$oModule )
		{
			$this->Lst( $oModule );
		}

	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'E':
				case 'L':
					$this->aShowColumns = array( 'Nombre' );
					break;
			}
		}
	function initialize()
		{
				$this->oFiltro = $this->oModule->loadClass( 'Encuesta_frm' );
				$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
				
			// Setea el titulo y la descripcion de la tabla
			$this->setTitle ( "Encuesta" );
			$this->setSummary( "Esta tabla contiene el listado de Encuestas" );
			$this->addColumn ( 'Nombre', 'cdEncuesta', true );
		}
		
	function salidaExcel()
		{
			header("Content-Type: application/vnd.ms-excel");
			header("Content-Disposition: attachment; filename=salida.xls");
			header("Pragma: no-cache");
			header("Expires: 0");
			$ncEncuesta = getParam("ncEncuesta");
			if ( !$ncEncuesta  ) return false;
			$cSql = "SELECT EIt.ncItem, ncGrupo, cdItem, nTipo, cOpciones 
								FROM gtEncuestaItem As EIt 
								JOIN gtItem as Ite 
									ON Ite.ncItem = EIt.ncItem 
								WHERE EIt.ncEncuesta = $ncEncuesta 
								ORDER BY ncGrupo, nOrden";
			$aItems = $this->oDatabase->getMatrix($cSql );

			$cSql = "SELECT ECo.ncContacto, ECo.cNombre, ECo.cApellido, ECo.cEmail, ECo.dNacimiento, ECo.dEncuesta, cdEncuestador, cdEvento
								FROM gtEncuestaContacto as ECo
								LEFT JOIN gtEncuestaEncuestador as EEn
									ON EEn.ncEncuesta = ECo.ncEncuesta
									AND EEn.ncEncuestador = ECo.ncEncuestador
								LEFT JOIN gtEncuestaEvento as EEv
									ON ECo.ncEncuesta = EEv.ncEncuesta
									AND ECo.ncEvento = EEv.ncEvento
								WHERE ECo.ncEncuesta = $ncEncuesta " ;
			$aContactos = $this->oDatabase->getMatrix($cSql );
			echo "Nombre\tApellido\tEmail\tNacimiento\tFecha encuesta\tEncuestador\tEvento\t";
			foreach( $aItems as $aItem )
			{
				$ncItem = $aItem[ncItem];
				if ( $aItem[nTipo] == 5) 
				{
					$aMatrix[$ncItem] = $this->oDatabase->getKeyArray($aItem[cOpciones] );
				}
				if ( $aItem[nTipo] == 4 || $aItem[nTipo] == 5 || $aItem[nTipo] == 6 || $aItem[nTipo] == 7) 
				{
					$aOpciones = explode( ',', $aItem[cOpciones] )  ;
					$cValor = 0;
					foreach( $aOpciones as $cOpcion ) 
					{
						$nPos = strpos( $cOpcion, ':' );
						if ( $nPos === FALSE ||  $cValor != 0)
							$aMatrix[$ncItem][++$cValor] = $cDescripcion;
						else
							$aMatrix[$ncItem][trim(substr( $cOpcion , 0 , $nPos ))] = trim(substr( $cOpcion , $nPos + 1)) ;
					}
				}
				if ( $aItem[nTipo] == 7) 
				{
					foreach ( $aMatrix[$ncItem] as $cKey => $cValue ) 
						echo $cValue . "\t";
				}
				else
					echo $aItem[cdItem] . "\t";				
			}
			echo "\n";
			foreach( $aContactos  as $aContacto )
			{
				$ncContacto = $aContacto[ncContacto];
				echo $aContacto[cNombre] . "\t" . $aContacto[cApellido] . "\t" . $aContacto[cEmail] . "\t" . $aContacto[dNacimiento] . "\t" . $aContacto[dEncuesta] . "\t" . $aContacto[cdEncuestador] . "\t" . $aContacto[cdEvento] . "\t" ; 

				foreach($aItems as $aItem)
				{
					// Busca los valores
					$cSql = "SELECT nValor FROM gtEncuestaDetalle WHERE ncEncuesta =$ncEncuesta AND ncContacto= $ncContacto AND ncItem = ". $aItem[ncItem];
					$aValue = $this->oDatabase->getArray($cSql);
					
					switch( $aItem[nTipo] ) 
					{
						case 2: // Si/No
							echo $aValue[0] == 1 ? "Si\t": "No\t" ;
							break;
						case 1: // Numero
							echo $aValue[0] . "\t";
							break;
						case 3: // Fecha							
							echo $aValue[0] . "\t";
							break;
						case 7: // Check
							foreach ( $aMatrix[$aItem[ncItem]] as $cCodigo => $cDescripcion)
								echo in_array( $cCodigo, $aValue ) ?  "1\t": "\t";
							break;
						case 5: case 4: case 6: // Consulta  // Lista // Radio 
								echo $aMatrix[$aItem[ncItem]][$aValue[0]] . "\t";
							break;
					}
				}
				echo "\n";
			}
			exit();
		}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT *
								FROM gtEncuesta AS Enc	";
			// Arma el Filtro de la Consulta
				$this->oFiltro->setDefaultSearchField( "cdEncuesta" );
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray('Enc') );
			return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_ENCUESTA, $cParametroRegistro, 'I', VENTANA_SECUNDARIA  );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro = "ncEncuesta=" . $aRow["ncEncuesta"];
			$this->addRowAction ( AGREGAR_ENCUESTACONTACTO, $cParametroRegistro  );
			$this->addRowAction ( SALIDA_ENCUESTA, $cParametroRegistro . "&amp;" . PARAM_OUTPUT . "=" . 'xls' );
			$this->addRowAction ( MODIFICAR_ENCUESTA, $cParametroRegistro , '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_ENCUESTA ,  $cParametroRegistro );
		}
	}
?>